home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / utils / graphic / viewers / jpeg / msdos / dvpeg / src / dvpeg.dsk (.txt) < prev    next >
Encoding:
Turbo C Context File  |  1992-05-10  |  17.6 KB  |  663 lines

  1. Turbo C Context File 
  2. JREVDCT.ASM
  3. JBSMOOTH.C
  4. JDMASTER.C
  5. JMEMSYS.C
  6. JMEMMGR.C
  7. JUTILS.C
  8. JMEMDOSA.ASM
  9. JVMAIN.C
  10. SVGAMODE.ASM
  11. POINT.ASM
  12. BANKS.ASM
  13. CTT\PRPGRANS\JQG\JRUANU2
  14. JQUANT2.ASM
  15. *.LST
  16. MAKEFILE.
  17. JBSM*.OBJ
  18. \VGAKIT\*.ASM
  19. .\VGAKIT\*.ASM
  20. .\VGAKIT\*.C
  21. JREV*.O*
  22. EXAMPLE.C
  23. *.CPP
  24. ..\PICS\*.CPP
  25. *.ASM
  26. blackbra.jpg
  27. d:blackbra.jpg
  28. d:ilm.jpg
  29. testimg.jpg
  30. -V9 ilm.jpg
  31. -V 9 ilm.jpg
  32. setjmp *.c
  33. setmany *.asm
  34. setmany .\vgakit\*.asm
  35. LDFLAGS *.c
  36. two/ pass *.*
  37. YCbCr *.c
  38. j_copy_sample_rows *.c
  39. jcopy_sample_rows *.c
  40. request jvmain.c
  41. Bogus *.c
  42. "read failed on temp file" *.c
  43. 'read failed' *.c
  44. Lane *.c
  45.  void *.c 
  46. Lane *.h
  47. trip_time
  48. force
  49. jdmain.c
  50. jdmain
  51. djpeg
  52. pixel_data
  53. case 1
  54. LXMUL
  55. dcinfo
  56. request
  57. read filed on
  58. read filed
  59. x_left
  60. x_right
  61. x_top
  62. y_top
  63. y_bot
  64. color
  65. register_setrgb
  66. cross
  67. *64 + (x>>2);
  68. jvmain.c
  69. jvmain
  70. dvpeg
  71. *.CPP
  72. *.OBJ
  73. *.ASM
  74. C:\PROJECTS\PROGRAMS\JPG\JWRGIF.C
  75. C:\PROJECTS\PROGRAMS\JPG\SVGAMODE.ASM
  76. C:\PROJECTS\PROGRAMS\JPG\BANKS.ASM
  77. CTT\PRPGRANS\JQG\JRUANU2
  78. C:\PROJECTS\PROGRAMS\PICS\FRACTUAL\FRACT.CPP
  79. C:\PROJECTS\PROGRAMS\JPG\JMEMMGR.C
  80. C:\PROJECTS\PROGRAMS\JPG\ANSI2KNR.C
  81. C:\PROJECTS\PROGRAMS\JPG\JMEMSYS.C
  82. C:\PROJECTS\PROGRAMS\JPG\RDPOINT.ASM
  83. C:\PROJECTS\PROGRAMS\JPG\RDPOINT.ASM
  84. C:\PROJECTS\PROGRAMS\JPG\NONAME00.CPP
  85. C:\PROJECTS\PROGRAMS\JPG\JCONFIG.H
  86. C:\PROJECTS\PROGRAMS\JPG\MODEL.H
  87. C:\PROJECTS\PROGRAMS\JPG\JVMAIN.C
  88. C:\PROJECTS\PROGRAMS\JPG\JVERSION.H
  89. C:\PROJECTS\PROGRAMS\JPG\JVMAIN.C
  90. C:\PROJECTS\PROGRAMS\JPG\JVMAIN.C
  91. :  /* select output file format */
  92.   /* Note: jselwxxx routine may make additional parameter changes,
  93.    * such as forcing color quantization if it's a colormapped format.
  94.    */
  95.   switch (requested_fmt) {
  96. #ifdef GIF_SUPPORTED
  97.   case FMT_GIF:
  98.     jselwgif(cinfo);
  99.     break;
  100. #endif
  101. #ifdef PPM_SUPPORTED
  102.   case FMT_PPM:
  103.     jselwppm(cinfo);
  104.     break;
  105. #endif
  106. #ifdef RLE_SUPPORTED
  107.   case FMT_RLE:
  108.     jselwrle(cinfo);
  109.     break;
  110. #endif
  111. #ifdef TARGA_SUPPORTED
  112.   case FMT_TARGA:
  113.     jselwtarga(cinfo);
  114.     break;
  115. #endif
  116.   default:
  117.     ERREXIT(cinfo->emethods, "Unsupported output file format");
  118.     break;
  119. LOCAL void
  120. usage (char * progname)
  121. /* complain about bad command line */
  122.   fprintf(stderr, "usage: %s ", progname);
  123. /*  fprintf(stderr, "[-G] [-P] [-R] [-T] [-b] [-g] [-q colors] [-1] [-D] [-d] [-m mem]");*/
  124.   fprintf(stderr, " inputfile\n");
  125.   exit(EXIT_FAILURE);
  126.      fprintf(stderr, "Independent JPEG Group's DJPEG, version %s\n%s\n",
  127.         if (optarg == NULL)
  128.             usage(argv[0]);
  129.         if (sscanf(optarg, "%u", &v_mod) == 0)
  130.             vid_usage(argv[0]);
  131.         if (v_mod > number_VGA_cards || v_mod < 0)        /* check valid card # */
  132.             vid_usage(argv[0]);
  133.         forced_video = 1;
  134. whichvga proc    uses si di
  135.     local    vesabuf[256]:byte
  136.     cmp    [first],'FI'
  137.     jnz    gotest
  138.     mov    ax,[retval]
  139. gotest:    mov    [bankadr],offset _nobank
  140. if @Codesize
  141.     mov    [bankseg],seg _nobank
  142. endif
  143.     xor    ax,ax
  144.     mov    [curbk],ax
  145.     mov    [vga512],ax
  146.     mov    [vga1024],ax
  147.     mov    [cirrus],ax
  148.     mov    [everex],ax
  149.     mov    [paradise],ax
  150.     mov    [tseng],ax
  151.     mov    [trident],ax
  152.     mov    [t8900],ax
  153.     mov    [ativga],ax
  154.     mov    [aheada],ax
  155.     mov    [aheadb],ax
  156.     mov    [oaktech],ax
  157.     mov    [video7],ax
  158.     mov    [chipstech],ax
  159.     mov    [tseng4],ax
  160.     mov    [genoa],ax
  161.     mov    [ncr],ax
  162.     mov    [compaq],ax
  163.     mov    [vesa],ax
  164.     mov    [first],'FI'
  165.     mov    ax,ss
  166.     mov    es,ax
  167.     lea    di,vesabuf[0]
  168.     mov    ax,4f00h
  169.     int    10h
  170.     cmp    ax,4fh
  171.     jnz    novesa
  172.     lea    si,vesabuf[0]
  173.     mov    di,offset vgainfo
  174.     mov    ax,ds
  175.     mov    es,ax
  176.     push    ds
  177.     mov    ax,ss
  178.     mov    ds,ax
  179.     mov    cx,7
  180.     rep    movsw
  181.     pop    ds
  182.     bkadr    vesa
  183.     mov    [vga512],1
  184.     mov    [vga1024],1
  185. ;    jmp    fini
  186. novesa:    mov    si,1
  187.     mov    ax,0c000h
  188.     mov    es,ax
  189.     cmp    word ptr es:[40h],'13'    ;ATI Signiture on the Video BIOS
  190.     jnz    noati
  191.     bkadr    ativga
  192.     mov    dx,1ceh
  193.     mov    al,0bbh
  194.     out    dx,al
  195.     inc    dl
  196.     in    al,dx
  197.     and    al,20h
  198.     jz    no512
  199.     mov    [vga512],1
  200. no512:    jmp    fini
  201. noati:    mov    ax,7000h        ;Test for Everex
  202.     xor    bx,bx
  203.     int    10h
  204.     cmp    al,70h
  205.     jnz    noev
  206.     bkadr    everex
  207.     and    ch,11000000b        ;how much memory on board
  208.     jz    skp
  209.     mov    [vga512],1
  210. skp:                    ;fall through for Everex boards using Trident or Tseng4000
  211. noev:    mov    ax,0bf03h        ;Test for Compaq
  212.     xor    bx,bx
  213.     mov    cx,bx
  214.     int    10h
  215.     cmp    ax,0bf03h
  216.     jnz    nocp
  217.     test    cl,40h            ;is 640x480x256 available?
  218.     jz    nocp
  219.     bkadr    compaq
  220.     mov    [vga512],1
  221.     jmp    fini
  222. nocp:    mov    dx,3c4h            ;Test for NCR 77C22E
  223.     mov    ax,0ff05h
  224.     call    _isport2
  225.     jnz    noncr
  226.     mov    ax,5            ;Disable extended registers
  227.     out    dx,ax
  228.     mov    ax,0ff10h        ;Try to write to extended register 10
  229.     call    _isport2        ;If it writes then not NCR
  230.     jz    noncr
  231.     mov    ax,105h            ;Enable extended registers
  232.     out    dx,ax
  233.     mov    ax,0ff10h
  234.     call    _isport2
  235.     jnz    noncr            ;If it does NOT write then not NCR
  236.     bkadr    ncr
  237.     mov    [vga512],1
  238.     jmp    fini
  239. noncr:    mov    dx,3c4h            ;Test for Trident
  240.     mov    al,0bh
  241.     out    dx,al
  242.     inc    dl
  243.     in    al,dx
  244.     cmp    al,06h
  245.     ja    notri
  246.     cmp    al,2
  247.     jb    notri
  248.     bkadr    trident
  249.     cmp    al,3
  250.     jb    no89
  251.     mov    [t8900],1
  252.     mov    dx,3d5h
  253.     mov    al,1fh
  254.     out    dx,al
  255.     inc    dx
  256.     in    al,dx
  257.     and    al,3
  258.     cmp    al,1
  259.     jb    notmem
  260.     mov    [vga512],1
  261.     je    notmem
  262.     mov    [vga1024],1
  263. notmem:    jmp    fini
  264. no89:    mov    [vga512],1
  265.     jmp    fini
  266. notri:    mov    ax,6f00h        ;Test for Video 7
  267.     xor    bx,bx
  268.     int    10h
  269.     cmp    bx,'V7'
  270.     jnz    nov7
  271.     bkadr    video7
  272.     mov    ax,6f07h
  273.     int    10h
  274.     and    ah,7fh
  275.     cmp    ah,1
  276.     jbe    skp2
  277.     mov    [vga512],1
  278. skp2:    cmp    ah,3
  279.     jbe    skp3
  280.     mov    [vga1024],1
  281. skp3:    jmp    fini
  282. nov7:    mov    dx,3d4h            ;Test for GENOA GVGA
  283.     mov    ax,032eh        ;check for Herchi Register
  284.     call    _isport2
  285.     jnz    nogn
  286.     mov    dx,3c4h            ;check for memory segment register
  287.     mov    ax,3f06h
  288.     call    _isport2
  289.     jnz    nogn
  290.     bkadr    genoa
  291.     mov    [vga512],1
  292.     jmp    fini
  293. nogn:    call    _cirrus            ;Test for Cirrus
  294.     cmp    [cirrus],0
  295.     je    noci
  296.     jmp    fini
  297. noci:    mov    dx,3ceh            ;Test for Paradise
  298.     mov    al,9            ;check Bank switch register
  299.     out    dx,al
  300.     inc    dx
  301.     in    al,dx
  302.     dec    dx
  303.     or    al,al
  304.     jnz    nopd
  305.     mov    ax,50fh            ;turn off write protect on VGA registers
  306.     out    dx,ax
  307.     mov    dx,offset _pdrsub
  308.     mov    cx,1
  309.     call    _chkbk
  310.     jc    nopd            ;if bank 0 and 1 same not paradise
  311.     bkadr    paradise
  312.     mov    dx,3ceh
  313.     mov    al,0bh            ;512k detect from Bob Berry
  314.     out    dx,al
  315.     inc    dx
  316.     in    al,dx
  317.     test    al,80h            ;if top bit set then 512k
  318.     jz    nop512
  319.     mov    [vga512],1
  320. nop512:    jmp    fini
  321. nopd:    mov    ax,5f00h        ;Test for Chips & Tech
  322.     xor    bx,bx
  323.     int    10h
  324.     cmp    al,5fh
  325.     jnz    noct
  326.     bkadr    chipstech
  327.     cmp    bh,1
  328.     jb    skp4
  329.     mov    [vga512],1
  330. skp4:    jmp    fini
  331. noct:    mov    ch,0
  332.     mov    dx,3d4h            ;check for Tseng 4000 series
  333.     mov    ax,0f33h
  334.     call    _isport2
  335.     jnz    not4
  336.     mov    ch,1
  337.     mov    dx,3bfh            ;Enable access to extended registers
  338.     mov    al,3
  339.     out    dx,al
  340.     mov    dx,3d8h
  341.     mov    al,0a0h
  342.     out    dx,al
  343.     jmp    short yes4
  344. not4:    mov    dx,3d4h            ;Test for Tseng 3000 or 4000
  345.     mov    ax,1f25h        ;is the Overflow High register there?
  346.     call    _isport2
  347.     jnz    nots
  348.     mov    al,03fh            ;bottom six bits only
  349.     jmp    short yes3
  350. yes4:    mov    al,0ffh
  351. yes3:    mov    dx,3cdh            ;test bank switch register
  352.     call    _isport1
  353.     jnz    nots
  354.     bkadr    tseng
  355.     cmp    ch,0
  356.     jnz    t4mem
  357.     mov    [vga512],1
  358.     jmp    fini
  359. t4mem:    mov    dx,3d4h            ;Tseng 4000 memory detect 1meg
  360.     mov    al,37h
  361.     out    dx,al
  362.     inc    dx
  363.     in    al,dx
  364.     test    al,1000b        ;if using 64kx4 RAMs then no more than 256k
  365.     jz    nomem
  366.     and    al,3
  367.     cmp    al,1            ;if 8 bit wide bus then only two 256kx4 RAMs
  368.     jbe    nomem
  369.     mov    [vga512],1
  370.     cmp    al,2            ;if 16 bit wide bus then four 256kx4 RAMs
  371.     je    nomem
  372.     mov    [vga1024],1        ;full meg with eight 256kx4 RAMs
  373. nomem:    bkadr    tseng4
  374.     jmp    short fini
  375. nots:
  376.     mov    dx,3ceh            ;Test for Above A or B chipsets
  377.     mov    ax,200fh
  378.     out    dx,ax
  379.     inc    dx
  380.     nojmp
  381.     in    al,dx
  382.     cmp    al,21h
  383.     jz    verb
  384.     cmp    al,20h
  385.     jnz    noab
  386.     bkadr    aheada
  387.     mov    [vga512],1
  388.     jmp    short fini
  389. verb:    bkadr    aheadb
  390.     mov    [vga512],1
  391.     jmp    short fini
  392. noab:    mov    dx,3deh            ;Test for Oak Technology
  393.     mov    ax,0ff11h        ;look for bank switch register
  394.     call    _isport2
  395.     jnz    nooak
  396.     bkadr    oaktech
  397.     mov    al,0dh
  398.     out    dx,al
  399.     inc    dx
  400.     nojmp
  401.     in    al,dx
  402.     test    al,80h
  403.     jz    no4ram
  404.     mov    [vga512],1
  405. no4ram:    jmp    short fini
  406. nooak:    mov    si,0
  407. fini:    mov    ax,si
  408.     mov    [retval],ax
  409. whichvga endp
  410. svgamode proc vid_mode, max_x:word            ;Set 640x480x256 on most SVGA cards
  411.     mov ax, [vid_mode]
  412.     bkadr trident
  413. nogn:            ;Test for Cirrus
  414.     jmp    fini
  415. const char arrow_left = 0x4b;
  416. const char arrow_right = 0x4d;
  417. const char arrow_up = 0x48;
  418. const char arrow_down = 0x50;
  419. const char page_up = 0x49;
  420. const char page_down = 0x51;
  421. const char escape = 27;
  422. const char home = 71;
  423. const char end = 79;
  424. /* now check if panning would be usefull
  425.     if (
  426.   if (optind < argc-1) {
  427.     fprintf(stderr, "%s: only one input file\n", argv[0]);
  428.     usage(argv[0]);
  429.             if (enable_pan == 1)
  430.     x_max = video_cards[card_id],vid_mode[video_mode_used].x_size;
  431.     if (x_pos + 10
  432.     if (x_pos + 10
  433.                   palbuf[i][0] = GETJSAMPLE(colormap[0][i]) >> 2;
  434.                   palbuf[i][1] = GETJSAMPLE(colormap[1][i]) >> 2;
  435.                   palbuf[i][2] = GETJSAMPLE(colormap[2][i]) >> 2;
  436.     setmany(palbuf,0,256);
  437.                               for (x=0; x < 256; x++){
  438.                                   palbuf[x][0] =;
  439.                                   palbuf[x][1] =;
  440.                                   palbuf[x][2] =;
  441.                                   }
  442.                               setmany(palbuf,0,256);
  443. if (enable_pan == 1){
  444. big_sarray_ptr raw_pic_ptr;        /* pointer to virt. pic. for panning */
  445. /*        definations for reading keyboard */
  446. const char arrow_left = 0x4b;
  447. const char arrow_right = 0x4d;
  448. const char arrow_up = 0x48;
  449. const char arrow_down = 0x50;
  450. const char page_up = 0x49;
  451. const char page_down = 0x51;
  452. const char escape = 27;
  453. const char home = 71;
  454. const char end = 79;
  455.         pallet[256][3],    /* duplicate pallete */
  456.         x_line = x_pos;
  457.         y_line = y_pos;
  458.   fprintf(stderr, "usage: %s ", progname);
  459.   fprintf(stderr, "video cards:\n");
  460.   fprintf(stderr, " 1) Ahead           2) ATI VGA         3) Chips & Tech\n");
  461.   fprintf(stderr, " 4) Everex          5) Oak Tech.       6) Genoa\n");
  462.   fprintf(stderr, " 7) NCR             8) Paradise        9) Trident\n");
  463.   fprintf(stderr, "10) Trident 8900   11) Tseng, Orchid, Genoa, Willow\n");
  464.   fprintf(stderr, "12) Tseng 4000     13) Video 7        14) Cirrus\n");
  465.   fprintf(stderr, "15) Compaq         16) Vesa\n");
  466.         for (gr_col = col = 0; col < cinfo->image_width && gr_col < maxx; col++){
  467.             point(gr_col++, gr_row, color = GETJSAMPLE(*ptr0));
  468.     for (row = 0; row < num_rows && gr_row < maxy; row++, gr_row++) {
  469.         ptr0 = pixel_data[0][row];
  470. /*        if (enable_pan){
  471.             output_row = *((*cinfo->emethods->access_big_sarray)
  472.                 (raw_pic_ptr, gr_row, TRUE));
  473.             }*/
  474.         for (gr_col = col = 0; col < cinfo->image_width && gr_col < maxx; col++){
  475.             point(gr_col++, gr_row, GETJSAMPLE(*ptr0));
  476. /*            if (enable_pan)
  477.                 *output_row++ = color;*/
  478.             ptr0++;
  479.         ptr0 = pixel_data[0][row];
  480. register JSAMPROW ptr0, output_row;
  481. /*        if (enable_pan){
  482.             output_row = *((*cinfo->emethods->access_big_sarray)
  483.                 (raw_pic_ptr, gr_row, TRUE));
  484.             }*/
  485.         for (gr_col = col = 0; col < cinfo->image_width && gr_col < maxx; col++){
  486.             point(gr_col++, gr_row, GETJSAMPLE(*ptr0));
  487. /*            if (enable_pan)
  488.                 *output_row++ = color;*/
  489. /*        if (enable_pan){         this is the old attempt
  490.             output_row = *((*cinfo->emethods->access_big_sarray)
  491.                 (raw_pic_ptr, gr_row, TRUE));
  492.             }*/
  493. /*            if (enable_pan)
  494.                 *output_row++ = color;*/
  495. /*    if (enable_pan){
  496.         raw_pic_ptr = (*cinfo->emethods->request_big_sarray)
  497.             (cinfo->image_width, cinfo->image_height, 1L);
  498.         if (raw_pic_ptr == NULL)
  499.             enable_pan = 0;
  500.         }*/
  501. /*    if (enable_pan){
  502.         raw_pic_ptr = (*cinfo->emethods->request_big_sarray)
  503.             (cinfo->image_width, cinfo->image_height, 1L);
  504.         if (raw_pic_ptr == NULL)
  505.             enable_pan = 0;
  506.         }*/
  507.             for (x = x_line; x < x_max && (x-x_line) < x_size; x++){        /* draw the picture */
  508.                 for (y=0; y < y_max; y++){
  509.                 for (y=0; y < y_max; y++){
  510.                     if (x_delta < 0){
  511.                         x_start = -x_delta;
  512.                         x_inc = 1;
  513.                         }
  514.                     else{
  515.                         x_start = x_max - x_delta;
  516.                         x_inc = -1;
  517.                         }
  518. now y_delta !!!
  519.                 for (y=0; y < y_max; y++)
  520.                 if (x_delta < 0){
  521.                     x_start = -x_delta;
  522.                     x_finish = x_max;
  523.                     x_inc = 1;
  524.                     }
  525.                 else{
  526.                     x_start = x_max - x_delta;
  527.                     x_finish = 0;
  528.                     x_inc = -1;
  529.                     }
  530.                 for (x=x_start; x != x_finish; x += x_inc){
  531.                     x_place = x + x_delta;
  532.                     y_place = y + y_delta;
  533.                     for (y=0; y < y_max; y++)
  534.                         point(x_place, y_place, rdpoint(x, y));
  535. /*            for (y=0; y < y_max; y++){
  536.                 output_row = *((*cinfo->emethods->access_big_sarray)
  537.                         (raw_pic_ptr, y+y_pos, FALSE));
  538.                 for (x = 0; x < x_size; x++){
  539.   /*                    if (x >= x_pos)
  540.                         point(x-x_pos, y, *output_row++);
  541.                     else
  542.                         *output_row++;
  543.                     }
  544.                 }*/
  545.             if (x_delta != 0){
  546.                 if (x_delta > 0){
  547.                     x_start = x_delta;
  548.                     x_finish = x_max;
  549.                     x_inc = 1;
  550.                     }
  551.                 else{
  552.                     x_start = x_max + x_delta;
  553.                     x_finish = 0;
  554.                     x_inc = -1;
  555.                     }
  556.                 for (x=x_start; x != x_finish; x += x_inc){
  557.                     x_place = x - x_delta;
  558.                     for (y=0; y < y_max; y++)
  559.                         point(x_place, y, rdpoint(x, y));
  560.                     }
  561.             else{                        /* now do y shift */
  562.                 if (y_delta > 0){
  563.                     y_start = y_delta;
  564.                     y_finish = y_max;
  565.                     y_inc = 1;
  566.                     }
  567.                 else{
  568.                     y_start = y_max + y_delta;
  569.                     y_finish = 0;
  570.                     y_inc = -1;
  571.                     }
  572.                 for (y=y_start; y != y_finish; y += y_inc){
  573.                     y_place = y - y_delta;
  574.                     for (x=0; x < x_max; x++)
  575.                         point(x, y_place, rdpoint(x, y));
  576.                     }
  577.                 }
  578.             if (y_delta <0) y_delta = -y_delta;
  579.             for (y=0; y < y_delta; y++){
  580.                 output_row = *((*cinfo->emethods->access_big_sarray)
  581.                         (raw_pic_ptr, y_pos + y_max - y, FALSE));
  582.                 for (x = 0; x < x_size; x++){
  583.                     if (x >= x_pos)
  584.                         point(x-x_pos, y_max - y, *output_row++);
  585.                     else
  586.                         *output_row++;
  587.                     }
  588.                 }
  589.                 for (y=0; y < y_max; y++){
  590.                     output_row = *((*cinfo->emethods->access_big_sarray)
  591.                             (raw_pic_ptr, y+y_pos, FALSE));
  592.                     for (x = 0; x < x_size; x++)
  593.                         if (x > x_pos)
  594.                             point(x-x_pos, y, *output_row++);
  595.                         else
  596.                             *output_row++;
  597.                     }
  598.                 }
  599.     if (forced_mode == 0){
  600.         for (i = 0; i < 5; i++)        /* set default to maximum resolution */
  601.             if (video_cards[card_id].vid_mode[i].mode_number != 0)
  602.                 video_mode_used = i;
  603.         for (i = 4; i >= 0; i--)
  604.             if (video_cards[card_id].vid_mode[i].x_size >= cinfo->image_width
  605.                     && video_cards[card_id].vid_mode[i].y_size >= cinfo->image_height
  606.                     &&    video_cards[card_id].vid_mode[i].x_size != 0)
  607.                 video_mode_used = i;
  608. /* now check if panning would be usefull - only iff card is detected and size know */
  609.     enable_pan = 1;    /* default to on */
  610.     if (video_cards[card_id].vid_mode[video_mode_used].y_size > cinfo->image_height
  611.          && video_cards[card_id].vid_mode[video_mode_used].x_size > cinfo->image_width)
  612.          enable_pan = 0;
  613.     if (forced_mode == 0)
  614.         svgamode(video_cards[card_id].vid_mode[video_mode_used].mode_number,
  615.                 video_cards[card_id].vid_mode[video_mode_used].x_size);
  616.     else
  617.         svgamode(forced_mode, 1024);        /* assume x_size */
  618. enable_pan = 1;    /* default to on */
  619.   fprintf(stderr, "-M to force the video mode requires the BIOS mode # in dec.\n");
  620.   fprintf(stderr, "-P to disable panning (saves memory)\n");
  621.   fprintf(stderr, "-M to force the video mode requires the BIOS mode # in dec.\n");
  622.   fprintf(stderr, "-V force video cards:\n");
  623. LOCAL void
  624. vid_usage (char * progname)
  625. /* complain about bad video selection */
  626.     if (forced_mode == 0)
  627.         svgamode(video_cards[card_id].vid_mode[video_mode_used].mode_number,
  628.                 video_cards[card_id].vid_mode[video_mode_used].x_size);
  629.     else
  630.         svgamode(forced_mode, 1024);        /* assume x_size */
  631.     fprintf(stderr, "-d   enable debugging\n");
  632.     fprintf(stderr, "Pg Up - brighten     Pg Dn - darken\n");
  633.      case 'V':            /* force a video card and _assume_ card exists */
  634.         if (optarg == NULL)
  635.             usage(argv[0]);
  636.         if (sscanf(optarg, "%d", &v_mod) < 1)
  637.             vid_usage(argv[0]);
  638.         if (v_mod > number_VGA_cards || v_mod < 1)        /* check valid card # */
  639.             vid_usage(argv[0]);
  640.         forced_video = 1;
  641.                 for (y=0; y < y_max; y++){
  642.                     row = y * shrink + y_pos;
  643.                     if (row < y_size){
  644.                         output_row = *((*cinfo->emethods->access_big_sarray)
  645.                                 (raw_pic_ptr, row, FALSE));
  646.                         for (x = 0; x < x_size; x++){
  647.                             col = x * shrink + x_pos;
  648.                             if (x > x_pos && col < x_size)
  649.                                 point(x-x_pos, y, *output_row++);
  650.                             else{
  651.                                 *output_row++;
  652.                                 if (x <= x_pos) point(x-x_pos, y, 0);        /* black ??  if shrouded */
  653.                                 }
  654.                             *output_row++;        /* since its shrunk at least 1 times */
  655.                             if (shrink >= 3) *output_row++;
  656.                             if (shrink == 4) *output_row++;
  657.                             }
  658.                         }
  659.                     }
  660.      case 'h':
  661.         help_usage();
  662.         break;
  663.